No longer need perspective or (probably) yelps
New format:	0x8 each
0x0	2	textID for label
0x2	1	-1 if last entry
0x3	1	pic
0x4	2	body
0x6	2	head

+-+-+-+-+

//7F0102CC	44DFC	recover body
	SLL	T6,V1,0x2
	SUBU	T6,T6,V1
000E7040	*SLL	T6,T6,0x1
	ADDU	V0,V0,T6
8042B19D*	LB	V0,B19D (V0)
	BGEZ	V0,7F0102F4
	SW	RA,0040 (SP)
	LW	A0,0044 (SP)
	JAL	7F023660
	LW	RA,0040 (SP)
//7F0102F4:
	JR	RA
	NOP

+-+

7F01035C	44E8C:	hack of MP menu body call
00047080	SLL	T6,A0,0x2
3C028003	LUI	V0,8003
004E1821	ADDU	V1,V0,T6
8C63B524	LW	V1,B524 (V1)	V1=selection
00037080	SLL	T6,V1,0x2
01C37023	SUBU	T6,T6,V1
000E7040	*SLL	T6,T6,0x1
004E1021	ADDU	V0,V0,T6
8342B19C	*LB	V0,B19C (V0)	V0=body
04410003	BGEZ	V0,+3
AFBF0044	SW	RA,0044 (SP)	(body is stored here after J, so it works)
0FC08D88	JAL	truly-random head routien from above
8FBF0044	LW	RA,0044 (SP)	(test!  Should directly jump back from subroutine)
//7F010388:	valid selection
03E00008	JR	RA
00000000	NOP

+-+

7F0103D0		recall perspective from a specfic character selection
SLL	T6,A0,0x2
LUI	V0,8003
ADDU	V0,V0,T6
LW	V0,B524 (V0)	V0=player's MPchar setting
SLL	T7,A0,0x2
LUI	AT,8003
BGEZ	V0,7F010408
SLL	T8,V0,0x2
SUBU	T7,T7,A0
SLL	T7,T7,0x2	T7=player# *0xC, used as default for MPchar
LUI	AT,8003
ADDU	AT,AT,T7
JR	RA
LWC1	F0,B1A0 (AT)
//7F010408:	when a character selected (not default -1)
SUBU	T8,T8,V0
SLL	T8,T8,0x2	T8=MPchar# * 0xC
ADDU	AT,AT,T8
LWC1	F0,B1A0 (AT)	F0=perspective from the mpcharacter menu
JR	RA
NOP

+-+-+

7F011C3C		MP character menu construction
LUI	AT,8003
SW	R0,A8D0 (AT)	0->8002A8D0:	???
LUI	AT,8003
SW	R0,A8D4 (AT)	0->8002A8D4:	???
LUI	AT,8003
ADDIU	SP,SP,FFD0
SW	R0,A8D8 (AT)	0->8002A8D8:	???
LUI	AT,8003
SW	R0,A8E4 (AT)	0->8002A8E4:	???
LUI	AT,8003
SW	S4,0028 (SP)
SW	S2,0020 (SP)
SW	S1,001C (SP)
SW	R0,A8E0 (AT)	0->8002A8E0:	???
SW	S3,0024 (SP)
LUI	AT,8003
LUI	S1,8003
LUI	S2,8009
LUI	S4,8003
SW	RA,002C (SP)
SW	S0,0018 (SP)
SW	R0,A8DC (AT)	0->8002A8DC:	???
ADDIU	S4,S4,B498	S4=8002B498:	end MPchar select; start handicap options
ADDIU	S2,S2,D130	S2=8008D130:	pointer to mp character section of main img table
ADDIU	S1,S1,B198	S1=8002B198:	start of MPchar select
ADDIU	S3,R0,000C	S3=size of image declaration
LBU	V1,0003 (S1)	V1=portrait used
//7F011CA8:
LW	T7,0000 (S2)	T7=list of MP character select image declarations
SLL	T6,V1,0x2	portrait *4, since each uses 4 images
MULTU	T6,S3
MFLO	S0
ADDU	V0,T7,S0	V0=offset to the four used for this portrait
LW	A2,0000 (V0)	A2=1st imgID#
SLTIU	AT,A2,0BB8
BEQ	AT,R0,7F011CDC	branch if not under arbitrary image cap
OR	A0,A2,R0
JAL	7F0CBEE8	load it in!
OR	A1,R0,R0
LW	T8,0000 (S2)
ADDU	V0,T8,S0
//7F011CDC:
LW	V1,000C (V0)	V1=2nd imgID#
SLTIU	AT,V1,0BB8
BEQ	AT,R0,7F011CFC	branch if not under arbitrary limit
OR	A0,V1,R0
JAL	7F0CBEE8
OR	A1,R0,R0
LW	T9,0000 (S2)
ADDU	V0,T9,S0
//7F011CFC:
LW	V1,0018 (V0)	V1=3rd imgID#
SLTIU	AT,V1,0BB8
BEQ	AT,R0,7F011D1C	branch if not under arbitrary limit
OR	A0,V1,R0
JAL	7F0CBEE8
OR	A1,R0,R0
LW	T0,0000 (S2)
ADDU	V0,T0,S0
//7F011D1C:
LW	V1,0024 (V0)	V1=4th imgID#
SLTIU	AT,V1,0BB8
BEQ	AT,R0,7F011D34	branch if not under arbitrary limit
OR	A0,V1,R0
JAL	7F0CBEE8
OR	A1,R0,R0
//7F011D34:	loopus
*ADDIU	S1,S1,000C	next MP character entry!
*SLTU	AT,S1,S4
*BNEL	AT,R0,7F011CA8
*LBU	V1,0003 (S1)	V1=portrait
//7F011D44:	SET NUMBER OF AVAILABLE MP CHARACTERS
LUI	S1,8003
ADDIU	S1,S1,B194
*LW	T1,0000 (S1)	T1=8002B194: #available MP characters
ADDIU	AT,R0,0040
LUI	A0,8003
*BEQ	T1,AT,7F011DE8	skip this nonsense if already set to max
ADDIU	A1,R0,0011	A1=stage# (cradle)
LW	A0,A8E8 (A0)	A0=8002A8E8:	folder#
JAL	7F01E2C0	V0=1 if stage 11 complete
OR	A2,R0,R0	A2=minimum difficulty
ADDIU	AT,R0,0003
BNE	V0,AT,7F011D84	question is, how can this ever be equal?
ADDIU	T3,R0,0009
ADDIU	T2,R0,0040
BEQ	R0,R0,7F011DE8
*SW	T2,0000 (S1)	save 0x40 to #available MPchars
//7F011D84:
LUI	S2,8003
LUI	S3,8003
*SW	T3,0000 (S1)	9->#available MPchars
ADDIU	S3,S3,B534	S3=8002B534	end of selected player chunk; MP stage#
ADDIU	S2,S2,B524	S2=8002B524	pl1 selected character
*LW	V0,0000 (S1)	V0=#available MPchars
//7F011D9C:
LW	T4,0000 (S2)	player's selected character
SLT	AT,T4,V0	...should be within maximum range
BNEL	AT,R0,7F011DE0
ADDIU	S2,S2,0004	next player
BLEZ	V0,7F011DD8	branch if it needs initializing
OR	S0,R0,R0
//7F011DB4:
JAL	7F011BD8
OR	A0,S0,R0
BEQL	V0,R0,7F011DDC
SW	S0,0000 (S2)
*LW	T5,0000 (S1)
ADDIU	S0,S0,0001
SLT	AT,S0,T5
BNEZ	AT,7F011DB4
NOP
//7F011DD8:	initialize to player number
SW	S0,0000 (S2)
ADDIU	S2,S2,0004
//7F011DE0:
BNEL	S2,S3,7F011D9C	keep going until all four players are checked
*LW	V0,0000 (S1)
//7F011DE8:	initialize selection registers
LUI	V0,8003
LW	V0,B524 (V0)	V0=pl1 selected char#
LUI	AT,8007
LUI	V1,8003
SW	V0,9710 (AT)
LUI	AT,8007
SW	V0,9720 (AT)
LUI	AT,8007
SW	R0,9730 (AT)
LUI	AT,8007
SW	R0,9740 (AT)
LUI	V1,8003
LW	V1,B528 (V1)	V1=pl2 selected char#
LUI	AT,8007
SW	R0,9750 (AT)
LUI	AT,8007
SW	V1,9714 (AT)
LUI	AT,8007
SW	V1,9724 (AT)
LUI	AT,8007
SW	R0,9734 (AT)
LUI	AT,8007
SW	R0,9744 (AT)
LUI	A0,8003
LW	A0,B52C (A0)	A0=pl3 selected char#
LUI	AT,8007
SW	R0,9754 (AT)
LUI	AT,8007
SW	A0,9718 (AT)
LUI	AT,8007
SW	A0,9728 (AT)
LUI	AT,8007
SW	R0,9738 (AT)
LUI	AT,8007
SW	R0,9748 (AT)
LUI	A1,8003
LW	A1,B530 (A0)	A1=pl4 selected char#
LUI	AT,8007
SW	R0,9758 (AT)
LUI	AT,8007
SW	A1,971C (AT)
LUI	AT,8007
SW	A1,972C (AT)
LUI	AT,8007
SW	R0,973C (AT)
LUI	AT,8007
SW	R0,974C (AT)
LUI	AT,8007
JAL	7F00B8AC
SW	R0,975C (AT)
//7F011EAC:	RETURN
LW	RA,002C (SP)
LW	S0,0018 (SP)
LW	S1,001C (SP)
LW	S2,0020 (SP)
LW	S3,0024 (SP)
LW	S4,0028 (SP)
JR	RA
ADDIU	SP,SP,0030
//7F011ECC:
JR	RA
NOP

+-+-+-+

//7F012568:
ADDIU	S3,R0,000C	this multiplier for both image offsets and entry offsets

//7F01259C:
LW	T8,00EC (SP)
LW	T5,0000 (S4)
ADDIU	S5,SP,00D8
MULTU	T8,S3
ADDIU	T6,R0,0002
SW	T6,0010 (SP)
OR	A0,S5,R0
ADDIU	A2,R0,0002
OR	A3,R0,R0
MFLO	T7
ADDU	S2,T7,T9
LBU	T3,0003 (S2)

//7F01261C:
LBU	T5,0003 (S2)	S2 hasn't changed yet

//7F012688:
LBU	T7,0003 (S2)	S2 hasn't changed yet

//7F0126F4:
LBU	T2,0003 (S2)	S2 hasn't changed yet

+-+-+-+

7F012AA0		loads the txtID# for label
SLL	T7,T2,0x2
SUBU	T7,T7,T2
*SLL	T7,T7,0x2
ADDU	A0,A0,T7
JAL	7F0C1DD8
LHU	A0,B198 (A0)

+-+-+-+-+

These all handle the now variably-sized MP character list!

7F012CBC	477EC	8463B194	*LH	V1,B194 (V1)
7F012D08	47838	8463B194	*LH	V1,B194 (V1)
7F012D5C	4788C	8463B194	*LH	V1,B194 (V1)


7F011D4C:	4687C	check value to maximum
82290003	*LB	T1,0003 (S1)
-
-
15200008	*BNEZ	T1,7F011D7C

7F011D80:	468B0
A6340000	*SH	S4,0000 (S1)
-
-
A6++++++	SH	T3,0000 (S1)
-
-
86++++++	LH	""

7F011DC4:	468F4
86++++++	LH	""

7F011DE4:	46914
86++++++	LH	""


scrolling limitter:
7F011A60:	46B90
85++++++	LH	""
	46C38
85++++++	LH	""


7F010280	44DB0	MAX characters multiplayer cheat
240E0001	*ADDIU	T6,R0,0001
	LUI	AT,8003
	JR	RA
A02EB197	*SB	T6,B197 (AT)
